Reasoning about Aliasing

نویسنده

  • Mark Utting
چکیده

Object-oriented systems are typically structured as complex networks of interacting mutable objects. To reason about such systems, simple and eecient techniques for coping with aliasing are needed. This paper identiies several key criteria for evaluating techniques for reasoning about aliasing, then proposes a technique which satisses these criteria. The proposed technique is a simple extension of the traditional local store technique for modelling pointers. The increasing popularity of the object-oriented style of programming has resulted in a renewed interest in reasoning about aliasing. Aliasing is common in object-oriented systems, because they are typically structured as complex networks of interacting mutable objects. Simple and eecient techniques for coping with aliasing are a prerequisite to reasoning eeectively about the behaviour of such systems. Techniques for reasoning about aliasing within data structures and aliasing between program variables were thoroughly researched during the 1970's Rey78, Hor79, Cou90]. However, the results of that research have largely been ignored in recent research on aliasing within object-oriented systems. Furthermore, some of the 1970's solutions are unnecessarily restrictive in the forms of aliasing that they allow. Object-oriented systems require more exible solutions. In the rst two sections of this paper, I reconsider the underlying problems caused by aliasing and identify the key criteria which should be used to evaluate the eeectiveness of any technique for reasoning about aliasing. Then I argue that the best technique for satisfying these criteria is one of the 1970's techniques, which I shall call the local store technique. In the remaining sections of this paper, the local store technique is gener-alised to remove the unnecessary restrictions that are usually placed upon it.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Preventing Cross-Type Aliasing for More Practical Reasoning

To reason about the correctness of a method when cross-type aliases are possible, one must not only consider all possible patterns of aliasing among the method’s arguments, but all possible ways in which these types’ abstract (specification-only) fields may be aliased. Because of the large number of such aliasing possibilities, and because of the complications they cause for reasoning, cross-ty...

متن کامل

Alias-based Reasoning for Object-Oriented Programs

Aliasing is the key problem that makes reasoning about reference structures hard. Large predicates have to be constructed that capture all aliasing properties of a given state. Instead of deducing the aliasing properties from a state that uses heaps and objects, we declare the alias-relation to be the state itself. We explore if such a state model provides a new and beneficial approach to the v...

متن کامل

Mechanized Verification with Sharing

We consider software verification of imperative programs by theorem proving in higher-order separation logic. Of particular interest are the difficulties of encoding and reasoning about sharing and aliasing in pointer-based data structures. Both of these are difficulties for reasoning in separation logic because they rely, fundamentally, on non-separate heaps. We show how sharing can be achieve...

متن کامل

Separation Logic Modulo Theories

Logical reasoning about program behaviours often requires dealing with heap structures as well as scalar data types. Advances in Satisfiability Modulo Theories (SMT) offer efficient procedures for dealing with scalar values, yet they lack expressive support for dealing with heap structures. In this paper, we present an approach that integrates separation logic—a prominent logic for reasoning ab...

متن کامل

Subtyping for mutable types in object-oriented programming languages

Subtype relationships in object-oriented programming languages are studied to aid code reuse and reasoning about programs that use subtype polymorphism. We de ne what it means for one abstract data type to be a subtype of another. This de nition allows for both mutation and aliasing. This work gives intuition for programmers and guidance to language designers.

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1996